package com.ym.medical.domain.vo;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.io.Serializable;
import java.util.Date;

@Data
@ApiModel(value = "电话回调参数")
public class HuaweiReturnVo  implements Serializable {
	@ApiModelProperty("主键")
	@NotNull(message = "主键不能为空!", groups = {Update.class})
	private Long id;

	@ApiModelProperty("呼叫方向")
	@Max(value = 2147483647, message = "呼叫方向最大值不能高于{value}", groups = {Add.class, Update.class})
	@Min(value = -2147483648, message = "呼叫方向最小值不能低于{value}", groups = {Add.class, Update.class})
	private Integer direction;

	@ApiModelProperty("隐私保护通话应用的app_key")
	@Size(max = 30, message = "隐私保护通话应用的app_key长度必须在{min}和{max}之间", groups = {Add.class, Update.class})
	private String appKey;

	@ApiModelProperty("呼叫记录的唯一标识")
	@Size(max = 60, message = "呼叫记录的唯一标识长度必须在{min}和{max}之间", groups = {Add.class, Update.class})
	private String icid;

	@ApiModelProperty("隐私保护号码")
	@Size(max = 15, message = "隐私保护号码长度必须在{min}和{max}之间", groups = {Add.class, Update.class})
	private String bindNum;

	@ApiModelProperty("通话链路的唯一标识。")
	@Size(max = 60, message = "通话链路的唯一标识。长度必须在{min}和{max}之间", groups = {Add.class, Update.class})
	private String sessionId;

	@ApiModelProperty("主叫号码")
	@Size(max = 15, message = "主叫号码长度必须在{min}和{max}之间", groups = {Add.class, Update.class})
	private String callerNum;

	@ApiModelProperty("被叫号码")
	@Size(max = 15, message = "被叫号码长度必须在{min}和{max}之间", groups = {Add.class, Update.class})
	private String calleeNum;

	@ApiModelProperty("呼入的开始时间。")
	private Date callInTime;

	@ApiModelProperty("呼叫结束时间")
	private Date callEndTime;

	@ApiModelProperty("转接呼叫操作失败的Q850原因值")
	@Max(value = 2147483647, message = "转接呼叫操作失败的Q850原因值最大值不能高于{value}", groups = {Add.class, Update.class})
	@Min(value = -2147483648, message = "转接呼叫操作失败的Q850原因值最小值不能低于{value}", groups = {Add.class, Update.class})
	private Integer fwdUnaswRsn;

	@ApiModelProperty("通话失败的拆线点")
	@Max(value = 2147483647, message = "通话失败的拆线点最大值不能高于{value}", groups = {Add.class, Update.class})
	@Min(value = -2147483648, message = "通话失败的拆线点最小值不能低于{value}", groups = {Add.class, Update.class})
	private Integer ulFailReason;

	@ApiModelProperty("呼入、呼出的失败SIP状态码。")
	@Max(value = 2147483647, message = "呼入、呼出的失败SIP状态码。最大值不能高于{value}", groups = {Add.class, Update.class})
	@Min(value = -2147483648, message = "呼入、呼出的失败SIP状态码。最小值不能低于{value}", groups = {Add.class, Update.class})
	private Integer sipStatusCode;

	@ApiModelProperty("0未录音1录音")
	@Max(value = 2147483647, message = "0未录音1录音最大值不能高于{value}", groups = {Add.class, Update.class})
	@Min(value = -2147483648, message = "0未录音1录音最小值不能低于{value}", groups = {Add.class, Update.class})
	private Integer recordFlag;

	@ApiModelProperty("录音开始时间")
	private Date recordStartTime;

	@ApiModelProperty("录音文件名")
	@Size(max = 100, message = "录音文件名长度必须在{min}和{max}之间", groups = {Add.class, Update.class})
	private String recordObjectName;

	@ApiModelProperty("录音文件名所在的目录名")
	@Size(max = 100, message = "录音文件名所在的目录名长度必须在{min}和{max}之间", groups = {Add.class, Update.class})
	private String recordBucketName;

	@ApiModelProperty("存放录音文件的域名")
	@Size(max = 100, message = "存放录音文件的域名长度必须在{min}和{max}之间", groups = {Add.class, Update.class})
	private String recordDomain;

	@ApiModelProperty("绑定ID")
	@Size(max = 60, message = "绑定ID长度必须在{min}和{max}之间", groups = {Add.class, Update.class})
	private String subscriptionId;

	@ApiModelProperty("创建时间")
	private Date creatTime;

	@ApiModelProperty("更改时间")
	private Date upTime;

	public interface Add {

	}

	public interface Update {

	}

}